UE4之判断点是否在矩形内 您所在的位置:网站首页 mongodb42 判断点位是否在多变形内 UE4之判断点是否在矩形内

UE4之判断点是否在矩形内

2024-06-04 00:51| 来源: 网络整理| 查看: 265

向量点乘的几何意义

向量点乘的数学定义:

 向量点乘的几何意义:

 所以向量的点乘可以用来计算两个向量之间的夹角。当夹角在0-90度之间,值为正数,在90-180之间,为负数

利用向量点乘计算点在矩形内

参考:

https://blog.csdn.net/faithmy509/article/details/82803646

所以如下图:

 

如下面的公式:

 以为P1点和P3点,计算p点与长方形三条边的夹角都是在0-90度之间,那就是都大于0,就可以判断点在矩形内部。

向量叉乘的几何意义

这里只讨论二位向量,三维的太复杂了。

向量A(x1,y1)和向量B(x2,y2)叉乘:A(x1,y1)xB(x2,y2) =  x1y2-x2y1

值的绝对值是两向量同起点,构成平行四边形的面积

值为正,(x2,y2)在(x1,y1)逆时针方向

值为负,(x2,y2)在(x1,y1)顺时针方向

值为0,(x2,y2)和(x1,y1)共线

 所以再来理解一下上面这段话

补充一个图,大概就明白了:看下面两个角度,一个是逆时针,一个是顺时针,所以为负数。

 最后上别人的一段代码,作为参考:

class Point: def __init__(self, x, y): self.x = x self.y = y def GetCross(p1,p2,p): return (p2.x-p1.x)*(p.y-p1.y)-(p.x-p1.x)*(p2.y-p1.y) def GetDot(p1,p2,p): return (p2.x-p1.x)*(p.x-p1.x)+(p2.y-p1.y)*(p.y-p1.y) def IsPointInMatrix(p): p1 = Point(0, 5) p2 = Point(0, 0) p3 = Point(5, 0) p4 = Point(5, 5) return GetCross(p1,p2,p)*GetCross(p3,p4,p) >= 0 and GetCross(p2,p3,p) * GetCross(p4,p1,p) >= 0 pa = Point(-1, -1) print(IsPointInMatrix(pa)) pb = Point(-1, 1) print(IsPointInMatrix(pb)) pc = Point(1, 1) print(IsPointInMatrix(pc)) pd = Point(1, -1) print(IsPointInMatrix(pd)) def IsPointInMatrix2(p): p1 = Point(0, 5) p2 = Point(0, 0) p3 = Point(5, 0) p4 = Point(5, 5) return GetDot(p1,p2,p) >= 0 and GetDot(p1,p4,p) >= 0 and GetDot(p3,p4,p) >=0 and GetDot(p3,p2,p) >= 0 pa = Point(-1, -1) print(IsPointInMatrix2(pa)) pb = Point(-1, 1) print(IsPointInMatrix2(pb)) pc = Point(1, 1) print(IsPointInMatrix2(pc)) pd = Point(1, -1) print(IsPointInMatrix2(pd))

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有